package org.miframework.arqsw.frontcontroller;

import java.io.File;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import org.miframework.arqsw.controller.Controlador;

public class AnnotationParser {
	Map<String, Controlador> controladores = new HashMap<String, Controlador>();
	@SuppressWarnings("unchecked")
	public Map<String, Controlador> mapear(String config) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
		Map<String, Controlador> controladores = new HashMap<String, Controlador>();
		System.out.println(config);
		File carpeta = new File(config);
		ArrayList<String> archivos = new ArrayList<>();
		int i=0;
		for (final File fileEntry : carpeta.listFiles()) {
	        String temp="";
			System.out.println(fileEntry.getName());
			String n = fileEntry.getName();
			for(int j=0; j<n.length()-5; j++){
				temp+=n.charAt(j);
			}
			archivos.add("com.prueba.myapp."+temp);
	        
	    }
		for(String s:archivos){
			System.out.println(s);
			Class clase = Class.forName(s);
			if(clase.isAnnotationPresent(org.miframework.arqsw.annotations.Controlador.class)){
				Controlador c = (Controlador)clase.newInstance();
				org.miframework.arqsw.annotations.Controlador anotacion = (org.miframework.arqsw.annotations.Controlador)clase.getAnnotation(org.miframework.arqsw.annotations.Controlador.class);
				System.out.println(anotacion.nombre());
				System.out.println(anotacion.url());
				controladores.put(anotacion.url(),c);
			}
		}
		
		
		
		
		return controladores;
	}
	
	
}
